package ink.tiptop.learn.convert.test;

import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;

import java.util.List;

/**
 * @author zjf
 * @date 2020-08-16 21:25
 * 反响映射方式,正向映射往往会和反向映射 结果映射刚好相反
 */
@Mapper
public interface A_ReverseConvert {

    @Mapping(source = "height", target = "height")
    @Mapping(source = "width", target = "width")
    CarDto carToDto(Car car);

    /**
     * 在当前Mapper下搜索 入参为Car 反值 CarDto的方法,继承并反转此映射关系
     * 继续写Mapping依然可以覆盖
     * 表达式和常量被排除（默默忽略）
     *
     * @param carDto
     * @return
     */
//    @InheritInverseConfiguration(name = "carToDto")
    @InheritInverseConfiguration
    @Mapping(target = "width", source = "width",ignore = false)
    Car carDtoToCar(CarDto carDto);

//    @InheritInverseConfiguration(name = "carToDto")

    /**
     转换list对象的时候也会使用
     * @param carDto
     * @return
     */
    @InheritInverseConfiguration
    List<Car> convertList(List<CarDto> carDto);
    /**
     转换list对象的时候也会使用
     * @param carDto
     * @return
     */
    List<CarDto> convertList2(List<Car> carDto);

}
